#!/bin/bash
# 针对ODS层建表开发操作、建模

HIVE_HOME=/usr/bin/hive
SQOOP_HOME=/usr/bin/sqoop

${HIVE_HOME} -e "
-- 学生打卡记录表 分区字段 dt 布隆索引字段time_table_id和class_id和signin_date和share_state
DROP TABLE itcast_ods.student_signin_ods;
CREATE TABLE IF NOT EXISTS itcast_ods.student_signin_ods (
    id                INT,
    normal_class_flag INT COMMENT '是否正课 1 正课 2 自习 3 休息',
    time_table_id     INT COMMENT '作息时间id normal_class_flag=2 关联tbh_school_time_table 或者 normal_class_flag=1 关联 tbh_class_time_table',
    class_id          INT COMMENT '班级id',
    student_id        INT COMMENT '学员id',
    signin_time       STRING COMMENT '签到时间',
    signin_date       STRING COMMENT '签到日期',
    inner_flag        INT COMMENT '内外网标志  0 外网 1 内网',
    signin_type       INT COMMENT '签到类型 1 心跳打卡 2 老师补卡 3 直播打卡',
    share_state       INT COMMENT '共享屏幕状态 0 否 1是  在上午或下午段有共屏记录，则该段所有记录该字段为1，内网默认为1 外网默认为0   (暂不用)',
    inner_ip          STRING COMMENT '内网ip地址',
    create_time       STRING COMMENT '创建时间'
) COMMENT '学生打卡记录表'
PARTITIONED BY (dt STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS ORC
TBLPROPERTIES ('orc.compress' = 'SNAPPY','orc.bloom.filter.columns' = 'time_table_id,class_id,signin_date,share_state');
-- 学生请假申请表 分区字段 dt 布隆索引字段class_id和audit_state和cancel_state和valid_state
DROP TABLE itcast_ods.student_leave_apply_ods;
CREATE TABLE IF NOT EXISTS itcast_ods.student_leave_apply_ods (
    id              INT,
    class_id        INT COMMENT '班级id',
    student_id      INT COMMENT '学员id',
    audit_state     INT COMMENT '审核状态 0 待审核 1 通过 2 不通过',
    audit_person    INT COMMENT '审核人',
    audit_time      STRING COMMENT '审核时间',
    audit_remark    STRING COMMENT '审核备注',
    leave_type      INT COMMENT '请假类型  1 请假 2 销假 （查询是否请假不用过滤此类型，通过有效状态来判断）',
    leave_reason    INT COMMENT '请假原因  1 事假 2 病假',
    begin_time      STRING COMMENT '请假开始时间',
    begin_time_type INT COMMENT '1：上午 2：下午 3：晚自习',
    end_time        STRING COMMENT '请假结束时间',
    end_time_type   INT COMMENT '1：上午 2：下午 3：晚自习',
    days            FLOAT COMMENT '请假/已休天数',
    cancel_state    INT COMMENT '撤销状态  0 未撤销 1 已撤销',
    cancel_time     STRING COMMENT '撤销时间',
    old_leave_id    INT COMMENT '原请假id，只有leave_type =2 销假的时候才有',
    leave_remark    STRING COMMENT '请假/销假说明',
    valid_state     INT COMMENT '是否有效（0：无效 1：有效）',
    create_time     STRING COMMENT '创建时间'
) COMMENT '学生请假申请表'
PARTITIONED BY (dt STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS ORC
TBLPROPERTIES ('orc.compress' = 'SNAPPY','orc.bloom.filter.columns' = 'class_id,audit_state,cancel_state,valid_state');
"

# 学生打卡记录表导入
${SQOOP_HOME} import \
--connect jdbc:mysql://192.168.10.150:3306/scrm \
--username root \
--password 123456 \
--query 'SELECT *, CURRENT_DATE() AS dt FROM tbh_student_signin_record where $CONDITIONS' \
--hcatalog-database itcast_ods \
--hcatalog-table student_signin_ods \
--split-by id \
-m 4

# 学生请假申请表导入
${SQOOP_HOME} import \
--connect jdbc:mysql://192.168.10.150:3306/scrm \
--username root \
--password 123456 \
--query 'SELECT *, CURRENT_DATE() AS dt FROM student_leave_apply where $CONDITIONS' \
--hcatalog-database itcast_ods \
--hcatalog-table student_leave_apply_ods \
--split-by id \
-m 4